Filename: BTR515.TXT Products: Btrieve NLM v5.15 Btrieve VAP v5.15 Date: JULY 2 1992 This file accompanies the NLM and VAP environment patches for Btrieve v5.15 programs. ****************** NOTICE *********************** This is the last patch release for Btrieve NLM version 5.15. Btrieve NLM version 5.15 is no longer the current version of the Btrieve NLM and Novell is only updating the most current version of the Btrieve NLM. This patch set does not contain patches for Btrieve requesters. Instead, version replacement modules have been included in the file BTRREQ.EXE. BTRREQ.EXE contains the latest requesters for DOS, Windows, OS/2, and UnixWare. The latest requester should be use with all 5.x versions of the VAP and NLM and all 6.x versions of the NLM. See the BTRREQ.TXT file contained in BTRREQ.EXE for details. *************************************************** ============================================================================ Disclaimer ========== Novell, Inc. makes no representations or warranties with respect to any NetWare software, and specifically disclaims any express or implied warranties of merchantability, title, or fitness for a particular purpose. Distribution of any NetWare software is forbidden without the express written consent of Novell, Inc. Further, Novell reserves the right to discontinue distribution of any NetWare software. Novell is not responsible for lost profits or revenue, loss of use of the software, loss of data, costs of re-creating lost data, the cost of any substitute equipment or program, or claims by any party other than you. Novell strongly recommends a backup be made before any software is installed. Technical support for this software may be provided at the discretion of Novell. ============================================================================ Contents ======== Patch File Information Installation Procedure Source File Information Patch Set Descriptions ============================================================================ Patch File Information ====================== Patch Set Filename: BTR515.EXE Date: 4/19/93 Files Included: BTR515 DOC This file PATCH515 CMD 2366 09-04-92 11:16a BPATRTRN 515 1019 09-04-92 11:16a BPATRTRV 515 255 09-04-92 11:16a BPATNLM 515 18941 04-09-93 12:51p PI EXE 33520 09-04-92 11:16a PATCH515 BAT 2366 09-04-92 11:16a BPATVAP 515 9088 04-15-93 12:23p ============================================================================ Installation Procedure ====================== The installation procedure for the Btrieve v5.15 patch set is as follows: 1. Copy all the files to the directory on your system that contains the files to be patched, and make this the default directory. 2. Ensure that PI.EXE is available on the system. PI.EXE is a patch utility that Novell provides to install product patches. You can use PI.EXE in DOS or OS/2 environments. CAUTION: Make sure you are patching the original (unpatched), released version of the software, since PI.EXE cannot patch a patched version. Refer to the following section, "Source File Information," for a list of the original files. The first time you patch the ORIGINAL software, the patch utility renames these files using the .ORG extension. 3. Run the batch or files files relevant to your situation: PATCH515.BAT Corrects the VAP and NLM versions under DOS PATCH515.CMD Corrects the VAP and NLM versions under OS/2 ============================================================================ Source File Information ======================= To ensure you are patching the original files, compare the files to be patched with the following list, which shows the byte size and the date and time stamps for the original releases: Source File Size Original Date Time ----------- ---- ------------- ---- BSERVER VAP 132015 1-24-91 5:49p BROUTER VAP 12860 1-31-91 10:21a BROUTER NLM 15884 1-24-91 11:38a BTRIEVE NLM 64616 2-19-91 11:22a ============================================================================ Patch Set Descriptions ====================== This section describes each patch in the patch set. For each patch, the description includes one or more keywords that may help you quickly determine whether the patch you need for a specific problem is included in this patch set. * * * * * * * * * Patch Number: 1 Platform/Product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: INDEX, SUPPLEMENTAL, EXTENDED, NULL Problem Fixed by This Patch: When Btrieve creates a supplemental index using a null key and an extended key type, if the null value is an even number, Btrieve does not recognize the extended key type. Instead, it uses the third bit of the key flags word to flag the key as either binary or string. * * * * * * * * * Patch Number: 2 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: UPDATE, INSERT, GET POSITION, COMPRESSED, DUPLICATE Problem Fixed by This Patch: This patch corrects a problem that causes positioning to be lost after you perform an Update operation on a file with compressed records. Performing a Get Position operation causes Btrieve to return a Status 8 (Invalid Positioning); a Get Next operation skips to the next key value, ignoring the next duplicate, if any exist. Similarly, after an Insert operation is performed on a file with a compressed record, a Get Previous operation skips to the previous key value, instead of the previous duplicate, if any exist. * * * * * * * * * Patch Number: 3 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: POSITION, DELETE, STEP FIRST, STEP PREVIOUS Problem Fixed by This Patch: This patch corrects a problem that sometimes occurs when a Step Previous operation follows a Step First operation and a Delete operation, causing Btrieve to return a Status 80 (Conflict) because positioning has been lost on the failed Step Previous operation. This patch restores positioning. * * * * * * * * * Patch Number: 4 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: TTS, PRE-IMAGE Problem Fixed by This Patch: This patch fixes a problem causing systems using the Transaction Tracking System (TTS) under heavy load to intermittently return a Status 14 (Pre-Image Open Error). Access problems continue until the file is closed and reopened. The problem does not occur when the BSPXCOM -W parameter is set to 1. This patch implements a semaphore to control TTS task switching. * * * * * * * * * Patch Number: 5 Platform/Product: Btrieve VAP - BSERVER.VAP, v5.15; BROUTER.VAP, v5.15 Btrieve NLM - BTRIEVE.NLM, v5.15; BROUTER.NLM, v5.15 Not included in the patch set is a patch for: Btrieve Requesters (DOS) - BREQUEST.EXE, v5.16; (OS/2) - BTRCALLS.DLL, v5.17 This problem is source fixed in the 6.0 requesters contained in this patch kit. Keywords: EXTENDED, INSERT, BUFFER Problem Fixed by This Patch: After an Extended Insert operation, Btrieve should pass back the data buffer with a count of records successfully inserted in the first word of the buffer. This patch corrects a problem that prevents the data buffer from being sent to the application if an Extended Insert returns a nonzero status. * * * * * * * * * Patch Number: 6 Platform/Product: Btrieve NLM - BROUTER.NLM, v5.15 Keywords: BROUTER, REMOTE, BUFFER, LENGTH Problem Fixed by This Patch: When you use BROUTER to access a remote server, it fails to update the application's data buffer length parameter. This patch enables the update. * * * * * * * * * Patch Number: 7 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: UPDATE, DELETE, CONFLICT Problem Fixed by This Patch: When you perform an Update or Delete operation, you may receive a Status 80 (Conflict) even though only one workstation is accessing the file. This problem occurs only if the record you are updating or deleting contains a data pattern in which all bytes except the first four are binary zeros. * * * * * * * * * Patch Number: 9 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: UPDATE, GET NEXT Problem Fixed by This Patch: When two clients are pointing to the same record in a file and one of them performs an Update operation that changes its key, the second client receives an unpredictable, out-of-sequence record the next time it performs a Get Next operation. This patch invalidates the second client's current record but leaves the next and previous pointers unchanged to maintain the relative position for the second client. * * * * * * * * * Patch Number: 10 Platform/Product: Not included in the patch set is a patch for: Btrieve Requester (DOS) - BREQUEST.EXE, v5.16 This problem is source fixed in the 6.0 requester contained in this patch kit. Keywords: SPX, ESTABLISH CONNECTION, SEGMENT Problem Fixed by This Patch: Due to incorrect segment usage in the SPXEstablish-Connection library call, 2 bytes of the caller's data area are overwritten whenever a new connection is made to a Btrieve server. This patch corrects the segment. * * * * * * * * * Patch Number: 11 Platform/Product: Btrieve NLM - BROUTER.NLM, v5.15 Not included in the patch set is a patch for: Btrieve Requester (DOS) - BREQUEST.EXE, v5.16 This problem is source fixed in the 6.0 requester contained in this patch kit. Keywords: BUFFER, GET, STEP NEXT Problem Fixed by This Patch: This patch corrects a problem in Patch #5 that returns corrupt data in the data buffer after any Get or Step Next operation returns a Status 9 (End of File). * * * * * * * * * Patch Number: 12 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: PROTECTION CHECK, INTERRUPT, UNLOAD Problem Fixed by This Patch: This patch corrects a problem that causes protection-check NLMs to interrupt when the Btrieve NLM is unloading. The interruption occurs because of data being written to a byte of memory that has just been freed. This patch uses other memory to prevent this interruption. * * * * * * * * * Patch Number: 13 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: ARCNET, VAP, SAP, ADVERTISER Problem Fixed by This Patch: When all workstations are shut down on an ArcNet network, the VAP operating system returns an error to all VAPs using the Service Advertising Protocol (SAP). This causes BSERVER to issue an Error Log message of "Send Failure in Advertiser." This patch prevents the error message from being sent. The patch is normally commented out, since BSERVER issues this error message only on the ArcNet, but may be enabled by ArcNet users who find their error logs becoming congested by the error message. * * * * * * * * * Patch Number: 14 Platform/Product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: STATUS 2, TASK, TTS Problem Fixed by This Patch: With multiple workstations involved in transactions, a client can receive erratic and nonrepeatable Status 2s (I/O Error) on operations ranging from OPENs to GETs. Btrieve returns a Status 2 because a client has opened the file to a Transaction Tracking System (TTS) task and then closed the file for rotation (due to limited handles). The initial client must reopen the file on the next access, but only that client, as the owner task, can do so; all other tasks get errors that translate to Status 2. The problem disappears as soon as the first client accesses or ends the transaction. This patch allows other clients to temporarily assume the right task number. * * * * * * * * * Patch Number: 16 Platform/Product: Btrieve VAP - BTRIEVE.VAP, v5.15 Keywords: STAT, ZERO Problem Fixed by This Patch: The STAT command may erroneously return zero for unused pages whenever the number is greater than 32 KB (32768). This patch forces a nonzero return. * * * * * * * * * Patch Number: 17 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: UPDATE, GET PREVIOUS Problem Fixed by This Patch: Btrieve v5.10 patch #9 causes the following problem: after an Update operation that changes a record's key value, a subsequent Get Previous operation skips any records whose key value is a duplicate of the new key value of the record that was just changed. This patch corrects the problem so that the Get Previous operation does not skip records with duplicate key values. * * * * * * * * * Patch Number: 19 Platform/Product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: UPDATE, GET NEXT Problem Fixed by This Patch: When two clients are pointing to the same record in a file and one of them performs an Update operation that changes its key, the second client receives an unpredictable, out-of-sequence record the next time it performs a Get Next operation. This patch invalidates the second client's current record but leaves the next and previous pointers unchanged to maintain the relative position for the second client. * * * * * * * * * Patch Number: 20 Platform/Product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: SUPPLEMENTAL, INDEX, ACCELERATED, DUPLICATE, INFINITE Problem Fixed by This Patch: This patch corrects a problem that causes Btrieve to enter an infinite loop if you build a supplemental index on a file opened in accelerated mode, and if Btrieve detects a duplicate key value in the opened file when the supplemental index specifies that duplicates are not allowed. * * * * * * * * * Patch Number: 21 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: LOG, PARSING, VOLUME Problem Fixed by This Patch: This patch makes it possible to specify a log file on a different volume from the data file to be logged. Applying this patch to the Btrieve NLM corrects filename parsing to allow you to place the log file on any other volume of the same server. * * * * * * * * * Patch Number: 22 Platform/Product: Not included in the patch set is a patch for: Btrieve Requester (DOS) - BREQUEST.EXE, v5.16 This problem is source fixed in the 6.0 requester contained in this patch kit. Keywords: SET DIRECTORY, DIRECTORY ERROR, DRIVE Problem Fixed by This Patch: On a Set Directory operation, if you specify only a drive letter and colon in the key buffer, Btrieve returns a Status 35 (Directory Error) and the default drive is not changed. This patch corrects the problem so that the default drive is changed to the drive letter you specify in the key buffer. * * * * * * * * * Patch Number: 23 Platform/Product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: GET POSITION, POSITION, SUCCESSFUL OPERATION Problem Fixed by This Patch: If you execute a Get Position operation without first establishing position, Btrieve returns a Status 0 (Successful Operation) instead of a Status 8 (Invalid Positioning). The operation also returns a Status 0 when it is performed on an empty file. This patch corrects position information set by the Open operation. * * * * * * * * * Patch Number: 24 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: KEY-BIASED, +50 Problem Fixed by This Patch: This patch improves Btrieve's performance on key-biased (+50) operations. * * * * * * * * * Patch Number: 25 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: ALTER TABLE, NETWARE SQL, ABEND Problem Fixed by This Patch: This patch corrects a problem that abends the server if the "filespec" string in the data buffer is longer than 64 bytes. The problem is in an undocumented Btrieve function call that NetWare SQL uses in its Alter Table statement. * * * * * * * * * Patch Number: 26 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: DROP, SUPPLEMENTAL, INDEX, LOCKED Problem Fixed by This Patch: This patch corrects a problem that allows a Drop Supplemental Index operation to proceed on a file locked in a transaction by another user, disrupting that user's transaction. As in Btrieve for DOS v5.10, this transaction now returns a Status 85 (File In Use). * * * * * * * * * Patch Number: 27 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: REBOOT, FILE, OPEN Problem Fixed by This Patch: This patch fixes the following problem: If, after opening a file and starting a transaction to insert records, you restart your system during the transaction, the transaction and the file are left open. This problem occurs because of the BSPXCOM watchdog-reset mechanism fails to reset the connection. * * * * * * * * * Patch Number: 28 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: CREATE, SUPPLEMENTAL, INDEX, ABEND Problem Fixed by This Patch: This patch fixes a problem that causes the server to abend when the Create Supplemental Index operation returns a nonzero status. This problem is caused by a failure of the drop supplemental index algorithm. * * * * * * * * * Patch Number: 29 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: CREATE, SUPPLEMENTAL, INDEX, SKIP, NULL, KEY Problem Fixed by This Patch: This patch fixes the following problem: The Create Supplemental Index operation fails to skip records with null-value keys even though the manual key flag is set in the key description file. * * * * * * * * * Patch Number: 30 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: STATUS, -1, ERROR Problem Fixed by This Patch: When multiple users attempt to update the same file, Btrieve may occasionally return a Status -1 due to an internal error. This patch prevents this invalid, internal-only error code from being returned. * * * * * * * * * Patch Number: 31 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: FREE, SPACE, THRESHOLD Problem Fixed by This Patch: This patch fixes a problem with the Free Space Threshold feature. The NLM starts a new page for variable portions of records before there is less space left on the page than specified in the free space threshold. This patch corrects the way the free space threshold is calculated. * * * * * * * * * Patch Number: 34 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: STATUS 2, STATUS 15, I/O, ERROR Problem Fixed by This Patch: This patch prevents a small timing window produced when many users are updating, inserting, and deleting data in a file and another user opens the file. During this timing window, the file can become corrupted, causing Btrieve to return a Status 2 (I/O Error) and a Status 15 (Pre-Image I/O Error). * * * * * * * * * Patch Number: 35 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: KEY-BIASED, +50 Problem Fixed by This Patch: This patch improves Btrieve's performance on key-biased (+50) operations. * * * * * * * * * Patch Number: 36 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: ABEND, GET GREATER, GET EQUAL Problem Fixed by This Patch: This patch prevents a server from abending following a Get Greater or Equal operation on a particular key value in a corrupted file. This situation very rarely occurs. * * * * * * * * * Patch Number: 37 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: EXTENDED, GET, KEY-ONLY Problem Fixed by This Patch: When an Extended Get operation following a key-only operation returns a Status 9 (End of File), the data buffer may be unchanged or may contain corrupted data. This patch completes the handling of extended operations after key-only operations. * * * * * * * * * Patch Number: 38 Platform/Product: Btrieve NLM - BROUTER.NLM, v5.15 Not included in the patch set is a patch for: Btrieve Requester (DOS) - BREQUEST.EXE, v5.16 This problem is source fixed in the 6.0 requester contained in this patch kit. Keywords: INSERT, STATUS 22, DATA, BUFFER, LENGTH Problem Fixed by This Patch: During an Insert operation, if the data buffer is big enough to contain the fixed-portion of the record but too small for the entire record, Btrieve returns a Status 22 (Data Buffer Length) and does not insert the record. However, the key buffer may be incorrectly altered. This patch ensures that the key buffer is not altered during unsuccessful Insert, Insert Extended, and Update operations. * * * * * * * * * Patch Number: 39 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: GPI, PRE-IMAGE Problem Fixed by This Patch: When a large (32+ KB) pre-image file is produced, as in a large transaction, a value greater than 32 KB may be erroneously treated as "signed" and is sign-extended with hex code FFs. This is later interpreted as an extremely large unsigned value when it is passed to the operating system, causing a General Protection Interrupt (GPI). This patch ensures that conversions are performed without sign extension. * * * * * * * * * Patch Number: 40 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: ABEND, HANDLE, CLOSE, READ ONLY, OPEN Problems Fixed by This Patch: Erratic Btrieve errors, including a General Protection Interrupt (GPI), can be caused by the following scenario: - A file is opened to a single read-only handle that is in the process of closing. - A request is received to open another handle in read-write mode, causing a timing window that allows the file's table entry to be deleted. This patch eliminates the timing window. * * * * * * * * * Patch Number: 42 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: POSITION, DUPLICATE, SUPPLEMENTAL, INDEX Problem Fixed by This Patch: This patch ensures that the correct position is reached when you perform a Get Next or Get Previous operation following a Delete operation on a file that contains a supplemental index with duplicate values. * * * * * * * * * Patch Number: 43 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: TRANSACTION, FLAG Problem Fixed by This Patch: If a Btrieve transaction file exists when you load BTRIEVE.NLM and is not flagged transactional, BTRIEVE.TRN is not erased when the NLM is unloaded. This patch ensures that the transaction file is always erased when BTRIEVE.NLM is unloaded. * * * * * * * * * Patch Number: 44 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: TRANSACTION, MODE, NORMAL, READ ONLY, STATUS 85 Problem Fixed by This Patch: If a file opened in normal mode is used inside a transaction, another workstation cannot open this file in read-only mode in a transaction. The Open operation returns a Status 85 (File Locked). This patch allows the Open operation to be completed successfully. * * * * * * * * * Patch Number: 45 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: MODE, ACCELERATED, STATUS 5 Problem Fixed by This Patch: This patch prevents file corruption on files opened in accelerated mode that return a Status 5 (Duplicate Key Value) during an Update operation. Damaged files may not display obvious symptoms of the corruption. (In the reported case, a key was lost from the B-tree.) * * * * * * * * * Patch Number: 46 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: GET DIRECT, DELETE, STATUS 2, STATUS 8, STATUS 9 Problems Fixed by This Patch: The patch corrects the following problems with the Get Direct operation: - Performing a Get Direct operation after deletion of the record by another application returns a Status 2 (I/O Error) instead of a Status 8 (Lost Position). - If a file contains records with duplicate values, a Get Next operation performed after a Get Direct returns a Status 9 (End of File) instead of the next record. - The status codes returned by a Get Direct operation following a Delete operation are inconsistent. - In certain cases, after deletion of the last record, Get Direct operations do not return a status code on the record just deleted. * * * * * * * * * Patch Number: 47 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: DELETE, STATUS 2 Problem Fixed by This Patch: In special situations, performing a Delete operation results in either a Status 2 (I/O Error) or the loss of a key from the B-tree. This patch prevents key loss and ensures file integrity. * * * * * * * * * Patch Number: 48 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: LOG, LOGGING Problem Fixed by This Patch: The logging feature of Btrieve can be disabled on some servers. This patch ensures that logging functions correctly. * * * * * * * * * Patch Number: 49 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: STATUS 52, PRE-IMAGE Problem Fixed by This Patch: When you open a file that requires recovery from the pre-image file, and the file has a page size larger than 1024 bytes, you may receive a Status 52 (Error Writing Cache) if any other file is open. This patch corrects the problem and adds new logic to Btrieve that helps control the size of the pre-image file. * * * * * * * * * Patch Number: 52 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: STATUS 8, STATUS 80, GET POSITION, UPDATE Problem Fixed by This Patch: Building a supplemental index can cause the server utilization to go to 100%, and other workstations making Btrieve calls to receive a Status 95 (Session No Longer Valid). This patch corrects the problem by decreasing the amount of time Btrieve uses to sort the keys. * * * * * * * * * Patch Number: 53 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: STATUS 19, ABEND Problem Fixed by This Patch: Reading or updating a corrupted file causes the server to abend. This patch prevents an abend and returns a Status 19 (Unrecoverable Error). * * * * * * * * * Patch Number: 54 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: KEY ONLY, AUTOINC, STATUS 5 Problem Fixed by This Patch: On a key-only file, if an autoincrement field does not begin at the first byte, the second insert with a binary zero value in that field causes Btrieve to return a Status 5 (Duplicate Key). This patch allows the second insert to succeed and returns a Status 0 (Successful Completion). * * * * * * * * * Patch Number: 55 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: SUPPLEMENTAL INDEX Problem Fixed by This Patch: When you add two supplemental indexes and then remove one of them, you can no longer access the other index. This patch enables you to access the remaining index. * * * * * * * * * Patch Number: 56 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: BREQUEST, READ-ONLY, STATUS 94 Problem Fixed by This Patch: If you are using BREQUEST.EXE v6.0, attempting to open a file in read-only mode when you have only Read rights to the file causes Btrieve to deny the Open operation and return a Status 94 (Permission Error). This patch allows you to open the file. * * * * * * * * * Patch Number: 57 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: KEY-ONLY, GET NEXT EXTENDED, STATUS 19 Problem Fixed by This Patch: A Get Next Extended operation following a Greater Than Or Equal operation with key-only bias causes Btrieve to return a Status 19 (Unrecoverable Error). This patch allows the Get Next Extended operation to succeed with a Status 0 (Successful Completion). * * * * * * * * * Patch Number: 58 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: EXTENDED GET, EXTENDED STEP, STATUS 62, STATUS 22 Problem Fixed by This Patch: In the Btrieve NLM, setting up an Extended Step or Extended Get operation to return only record positions (NumOfFields = 0) without any record data causes Btrieve to return a Status 62 (Incorrect Descriptor). * * * * * * * * * Patch Number: 59 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: STATUS 80, UPDATE, DELETE Problem Fixed by This Patch: If a workstation tries to update or delete a record that a second workstation has changed since the first workstation read that record, Btrieve returns a Status 80 (Conflict). However, Btrieve incorrectly allows the conflict condition to be cleared after the first workstation performs any of the following operations: Stat, Unlock, Set Owner, Clear Owner, Create Index, or Drop Index. This patch corrects the problem by forcing the first workstation to reread the record before changing it. * * * * * * * * * Patch Number: 60 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: HANG, ABEND, TTS Problem Fixed by This Patch: When the NetWare Transaction Tracking System (TTS) is performing disk I/O and detects a hardware error, the TTS dismounts the volume and Btrieve abends the server. This patch prevents the abend. * * * * * * * * * Patch Number: 61 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: ZSTRING, LSTRING, NULL, MANUAL Problem Fixed by This Patch: This patch pertains only to zstring and lstring keys that are flagged with the NULL or MANUAL attribute. If an application updates a record and changes the key from NULL or MANUAL to non-NULL (or vice versa) by changing bytes beyond the end of the key from the null character to any other character (or vice versa), Btrieve does not update the index to reflect the change in the key. This patch ensures that Btrieve updates the index. * * * * * * * * * Patch Number: 62 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: OPEN, CLOSE, LOOP Problem Fixed by This Patch: Btrieve enters an infinite loop when you perform a large number of Open and Close operations on the same file. This patch enables Btrieve to handle multiple Open and Close operations and prevents the infinite loop. * * * * * * * * * Patch Number: 63 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: GET NEXT, UPDATE, PATCH 51, PATCH 9 Problem Fixed by This Patch: Patch #51 reintroduced a problem that an earlier patch (Patch #9 for the Btrieve NLM) had corrected. The problem is that when two clients are pointing to the same record in a file and one of them performs an update operation that changes the record's key, the second client receives an unpredictable, out-of-sequence record the next time it performs a Get Next operation. This patch (#63) invalidates the second client's current record but leaves the next and previous pointers unchanged, thus maintaining the relative position for the second client. * * * * * * * * * Patch Number: 64 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: KEY-ONLY, STATUS 9, STATUS 19, HANG Problem Fixed by This Patch: Get Greater Than(8) or Get Less Than(10) operations do not work correctly in case of key-only files if the key value specified for the operation exists in the file. It might return a wrong record or status 9 or status 19 incorrectly, or it might even cause the server to hang, depending on the file and the key value involved. * * * * * * * * * Patch Number: 65 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: STATUS 37, TRANSACTION, BEGIN, ROLL FORWARD, LOGGING Problem Fixed by This Patch: If, having started a transaction, the first operation is an insert and the record has a duplicate key and logging is active for that file, Btrieve will erroneously make a second BEGIN_TRANSACTION entry in the log file. This second entry causes a status 37 when rolling forward the file. This patch prevents Btrieve from logging the same BEGIN_TRANSACTION twice. * * * * * * * * * Patch Number: 66 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: GET DIRECT, GET POSITION, STATUS 43, EXTENED INSERT Problem Fixed by This Patch: A GET_DIRECT could return a status 43 right after a successful GET_POSITION, even though no other workstation deleted the record. It happened when the EOF had been reached by using STEP or STEP_EXTENDED operations. In addition, the logical and physical position information were not set properly on an EXTENDED_INSERT when one of the inserts failed because of duplicate keys. This patch corrects the position information in both cases. * * * * * * * * * Patch Number: 67 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: TTS, UPDATE, GET EQUAL, STATUS 7 Problem Fixed by This Patch: If all patches are applied to the BTRIEVE.NLM and a data file is flagged transactional (TTS), an update following a Get Equal returns a status 7 (Different Key Number). The problem was introduced by patch #49. This patch fixes the problem with patch #49. Both this patch and patch #49 must be applied together. * * * * * * * * * Patch Number: 68 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: DELETE, STATUS 2, STATUS 14, STATUS 15 Problem Fixed by This Patch: Fixes a bug which appears only under very special circumstances: If a workstation has no current record in a file (either because it has just opened the file, or because it has deleted its current record) and the workstation attempts to get a record with a lock bias, and the attempt fails because the record is already locked by another user, and then the workstation makes an Update call, instead of a returning a status 8 as it should, Btrieve returns either a status 2 or a status 15 (depending on the file's page size). If a status 15 is returned, and all users of the file then do a Close operation, subsequent attempts to open the file will fail with a status 14. This patch corrects the problem. * * * * * * * * * Patch Number: 69 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: PREIMAGE, STATUS 2, STATUS 14, STATUS 15 Problem Fixed by This Patch: Under certain rare conditions, Btrieve fails to recover a file's preimage after an error that would have returned a status 2. A status 15 is returned instead, and later attempts to open the file may fail with a status 14. This patch ensures that the original status 2 is returned and that the file's preimage is rolled-back. * * * * * * * * * Patch Number: 70 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: GET DIRECT, NULL, STATUS 82, STATUS 44 Problem Fixed by This Patch: If a data file contains a key with both duplicates and a null attribute, a GET DIRECT (operation 23) on a record with a null key could give different status codes (status 82 or status 44) depending on whether the key is a permanent or a supplemental key. This patch ensures that the proper status code (status 44, null key path) will always be returned this GET DIRECT. * * * * * * * * * Patch Number: 71 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: PREIMAGE, STATUS 14 Problem Fixed by This Patch: If the machine is turned off or rebooted between the time a Btrieve file has marked as having a preimage file and the time the preimage file is created, the file cannot be opened. Btrieve returns status 14. This patch fixes the problem caused by a timing window, and it ensures that the file can be opened. * * * * * * * * * Patch Number: 72 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: DELETE, GET NEXT, KEY ONLY Problem Fixed by This Patch: Doing a Delete (operation 4) followed by a Get Next (operation 6) on a key-only file with duplicated key values where the key consists of more than one segment, the given status or record was not the proper one. This patch ensures that both the status and the record are correct. * * * * * * * * * Patch Number: 73 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: CORRUPT, VARIABLE, STATUS 2, RECOVER Problem Fixed by This Patch: Given a file with corruption on the variable pages (specifically corrupt page number fields), Btrieve would return a status 2, thwarting efforts to recover the file by using Step Next (or Step Previous operations) to retrieve undamaged records. This patch causes Btrieve to return the correct status code, 54 (variable page error), which in addition to returning the first part of the record, also advances the position block farther into the file so that subsequent, undamaged records can be retrieved. * * * * * * * * * Patch Number: 74 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: CORRUPT, RETRIEVE, STATUS 2, RECOVER Problem Fixed by This Patch: When Stepping through a file with corrupted pages (specifically corrupt page number fields), Btrieve would sometimes have trouble returning a record from the first good page read after a series of bad pages. This patch fixes the problem. * * * * * * * * * Patch Number: 75 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: GET LESS, STATUS 9, GET POSITION Problem Fixed by This Patch: After an application does a Get Less Than or a Get Less Than or Equal (opcodes 10 and 11) with an empty file and receives a status 9 (End of File) error, if it does a Get Position (operation 22), garbage is returned in the data buffer, instead of a record address and the status code is set to 0, indicating no error. This patch ensures that the status code is set to 8, invalid positioning. * * * * * * * * * Patch Number: 76 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: OPERATION 11, GET LESS, POSITION, SUPPLEMENTAL Problem Fixed by This Patch: Doing an operation 11 (Get Less or Equal) on a key-only file or on a file with a supplemental key with duplicates allowed, Btrieve does not always set the position properly. This patch ensures the correct positioning in this case. * * * * * * * * * Patch Number: 77 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: INSERT, UPDATE, PREIMAGE Problem Fixed by This Patch: During insert and update operations, unnecessary key pages are recorded in the preimage (.PRE) file. This patch corrects the problem. * * * * * * * * * Patch Number: 78 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: ACCELERATED MODE, STATUS 5, CORRUPTION Problem Fixed by This Patch: This patch prevents file corruption on files opened in accelerated mode that return a Status 5 (Duplicate Key Value) during an Update operation. Damaged files may not display obvious symptoms of the corruption. (In the reported case, a key was lost from the B-tree.) GROW PATCH * * * * * * * * * Patch Number: 79 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: GET DIRECT, DELETE, STATUS 2, STATUS 8, STATUS 9 Problems Fixed by This Patch: The patch corrects the following problems with the Get Direct operation: - Performing a Get Direct operation after deletion of the record by another application returns a Status 2 (I/O Error) instead of a Status 8 (Lost Position). - If a file contains records with duplicate values, a Get Next operation performed after a Get Direct returns a Status 9 (End of File) instead of the next record. - The status codes returned by a Get Direct operation following a Delete operation are inconsistent. - In certain cases, after deletion of the last record, Get Direct operations do not return a status code on the record just deleted. * * * * * * * * * Patch Number: 80 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: EXTENDED GET, EXTENDED STEP, STATUS 22 Problem Fixed by This Patch: In the Btrieve VAP, setting up an Extended Step or Extended Get operation to return only record positions (NumOfFields = 0) without any record data causes the VAP to return a status 22 if the data buffer is just as long as required by Btrieve. This patch corrects the problem so that the data is returned with no error. * * * * * * * * * Patch Number: 81 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: EXTENDED FILES, STATUS 14, PREIMAGE, OPEN Problem Fixed by This Patch: For extended files, if the machine reboots in the middle of a transaction, a subsequent open would not be able to open the file. A status 14 would be returned (preimage open error). This patch corrects the problem. * * * * * * * * * Patch Number: 82 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: STATUS 80, UPDATE, DELETE Problem Fixed by This Patch: If a workstation tries to update or delete a record that a second workstation has changed since the first workstation read that record, Btrieve returns a Status 80 (Conflict). However, Btrieve incorrectly allows the conflict condition to be cleared after the first workstation performs any of the following operations: Stat, Unlock, Set Owner, Clear Owner, Create Index, or Drop Index. This patch corrects the problem by forcing the first workstation to reread the record before changing it. * * * * * * * * * Patch Number: 83 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: PATCH 78 Problem Fixed by This Patch: This patch fixes a problem that was introduced by patch #78. This patch fixes the problem with patch #78. Both of these patches should be used to eliminate the original problem mentioned in the patch #78 description. * * * * * * * * * Patch Number: 84 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: ZSTRING, LSTRING, NULL, MANUAL Problem Fixed by This Patch: This patch pertains only to zstring and lstring keys that are flagged with the NULL or MANUAL attribute. If an application updates a record and changes the key from NULL or MANUAL to non-NULL (or vice versa) by changing bytes beyond the end of the key from the null character to any other character (or vice versa), Btrieve does not update the index to reflect the change in the key. This patch ensures that Btrieve updates the index. * * * * * * * * * Patch Number: 85 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: GET NEXT, UPDATE, GET POSITION Problem Fixed by This Patch: If a client application receives a status 80 on an Update (because a second client has Updated the record since the first client read it), and then the application does a Get Position, an incorrect status 8 will be returned. This patch fixes the problem so that a status 0 and a valid record address will be returned from the Get Position call. * * * * * * * * * Patch Number: 86 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: GET EXTENDED Problem Fixed by This Patch: This patch implements an enhancement to the GET_EXTENDED API to allow it to use the current record as the starting point, rather than the next record. The header signature "UC" must be used instead of the normal extended get signature, "EG". This enhancement is present in the NLM without a patch, and is implemented with recent patches in the DOS, Windows, and OS/2 client Btrieves. * * * * * * * * * Patch Number: 87 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: CASE INSENSITIVE, KEY Problem Fixed by This Patch: This patch implements an enhancement that allows applications to define case-insensitive keys by setting the 0x0400 bit in the key flags word for a Create or Create Supplemental Index call. But, unpatched or older Btrieve engines may misinterpret and even corrupt these case-insensitive keys. * * * * * * * * * Patch Number: 88 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: GET DIRECT, NULL, STATUS 82, STATUS 44 Problem Fixed by This Patch: If a data file contains a key with both duplicates and a null attribute, a GET DIRECT (operation 23) on a record with a null key could give different status codes (status 82 or status 44) depending on whether the key is a permanent or a supplemental key. This patch ensures that the proper status code (status 44, null key path) will always be returned this GET DIRECT. * * * * * * * * * Patch Number: 89 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: PREIMAGE, STATUS 14 Problem Fixed by This Patch: If the machine is turned off or rebooted between the time a Btrieve file has marked as having a pre-image file and the time the pre-image file is created, the file cannot be opened. Btrieve returns status 14. This patch fixes the problem caused by a timing window, and it ensures that the file can be opened. * * * * * * * * * Patch Number: 90 Platform/product: Btrieve VAP - BSERVER.VAP, v5.15 Keywords: PREALLOCATE, PAGES Problem Fixed by This Patch: When a file is created with the preallocation flag set and the file's page size multiplied by the number of pages to preallocate is an even multiple of 65536, an additional 65536 bytes are preallocated to the file. This patch corrects the problem so that only the specified number of pages are preallocated. * * * * * * * * * Patch Number: 91 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: SUPPLEMENTAL INDEX, STATUS 9, NULL Problem Fixed by This Patch: When creating a supplemental index where the key has a null value defined and all the existing records in the file already contain that null value in the appropriate place, Btrieve returns a status 9 on the create supplemental index call, and no index is created. This patch fixes the problem by returning a status zero after creating the index with zero number of keys in it. * * * * * * * * * Patch Number: 92 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: DROP SUPPLEMENTAL INDEX, CORRUPT, OPERATION 31 Problem Fixed by This Patch: If an application works on several files at the same time and the pagesizes of those files are greater than 1024 the first page of one or more files (FCRs) can get corrupted especially if the Drop Supplemental Index (op. 31) is used. The corruption is usually located in the second half of the FCR first, but later, doing the same sequence of operations many times, it moves backwards to the beginning of the file. In extreme situation the file could become a non-openable file by Btrieve. The bug was found in the module where Btrieve opens the file. Actually not the whole FCR was read then later used, just a part of it. But at completion the FCR with proper size was written down to the disk eventually with garbage in it. This patch ensures that the whole FCR page will be loaded every time when it is needed. * * * * * * * * * Patch Number: 93 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: OWNER NAME, CLEAR OWNER, STATUS 46 Problem Fixed by This Patch: This bug applied to files with owner names which allowed non-owner applications to open them, but not to write to them. Btrieve was incorrectly allowing a Clear Owner operation to complete successfully after the application opened the file without its owner name. Now Btrieve will return the proper error code instead: 46, Access To File Denied. * * * * * * * * * Patch Number: 94 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: TRANSACTION, PREIMAGE, LARGE Problem Fixed by This Patch: Users whose applications perform a very large number (several thousand) of writing operations on any one file inside a single transaction may have been noticing that, during the course of such a transaction, the associated preimage file's size would jump from a large number (say 33 megabytes) to a huge number (approaching 4 gigabytes) in an instant, even though there was not 4 gigabytes of free space on the volume. This patch fixes this sparse file problem. * * * * * * * * * Patch Number: 95 Platform/Product: Btrieve NLM - BTRIEVE.NLM, v5.15 Keywords: TRANSACTION, PREIMAGE, CORRUPT, STATUS 109 Problem Fixed by This Patch: Transactions which insert, update, or delete several thousands of records in any one file can cause a 16-bit counter of pages in the preimage file to overflow. If the transaction is aborted after the counter has overflowed the Btrieve file would be corrupted. This patch causes Btrieve to guard against the overflow, and to return a new error status code, 109, to any operation which would trigger the overflow. ** End of BTR515.TXT **